package com.example.demo.customer;

import com.example.demo.exception.ApiRequestException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

@RequestMapping(path = "api/v2/customers")
@RestController
public class CustomerControllerV2 {
    private final CustomerService customerService;

    @Autowired
public CustomerControllerV2(CustomerService customerService) {
    this.customerService = customerService;
}

    @GetMapping
    List<Customer> getCustomers() {
        return customerService.getCustomers();
    }

    @GetMapping(path = "{customerId}")
    Customer getCustomer(@PathVariable("customerId")Long id){
        return customerService.getCustomer(id);
//        return customerService.getCustomers()
//                .stream()
//                .filter(customer -> customer.getId() == id)
//                .findFirst()
//                .orElseThrow(() -> new IllegalStateException("customer 无法找到"));
    }

    @GetMapping(path = "{customerId/exception}")
    Customer getCustomerException(@PathVariable("customerId") Long id){
        throw new ApiRequestException("ApiRequestException for customer" + id);
    }

    @PostMapping
    void createNewCustomer(@Valid @RequestBody Customer customer){
        System.out.println("POST 请求...");
        System.out.println(customer);
    }

    @DeleteMapping(path ="{customerId}")
    void deleteCustomer(@PathVariable("customerId")Long id){
        System.out.println("DELETE 请求，删除 Customer,其ID为"+ id);
    }
}
